"use strict"
/**
 * 观察者
 * 1. 每个观察则绑定一个对应的插值表达式或者指令，订阅内部所有的值对应的 dep （这里先做最简单的，每个插值&变量有一个数据即可）
 * 2. 数据变更，更新视图
 * */ 
class Watcher{
    constructor(vm, key, callback) {
        this.vm = vm
        this.cb = callback
        this.key = key
        this.newValue = ''
        this.oldValue = ''

        this.init()
    }

    init() {
        // 1. 设置 wacther 实例为目标观察者对象
        Dep.target = this
        // 2. 执行回调，让 dep 添加观察者
        this.update(this.vm[this.key])
        // 重置
        Dep.target = null
    }

    // 更新视图
    update(value) {
        this.cb(value)
    }
}
